
#ifdef HOOKDLL_EXPORTS
#define WINKSTARTCALLER_API __declspec(dllexport) 
#else
#define WINKSTARTCALLER_API __declspec(dllimport) 
#endif

#include <time.h>
#include <sys/utime.h>
#include <iostream>
#include <CommCtrl.h>
#include <shellapi.h>

WINKSTARTCALLER_API enum TLogginLevel
{
	LOG_NONE = 0,				//No Logging

	LOG_ERROR = 2,				//Logging only Error messages

	LOG_HINT = 4,				//Logging Error and HInt messages

	LOG_ACTIONS = 8,			//Logging all Actions

	LOG_ACTION_MOUSE = 16,		//Logging Mouse Actions

	LOG_ACTION_KEYBOARD = 32,	//Logging only Keyboard Actions

	LOG_DEBUG = 64,				//Logging Debugg Messages

	LOG_MESSAGES = 128			//Logging Windows Messages

};

static TLogginLevel g_LoggingLevel = LOG_ERROR;
static wchar_t *g_LoggingPath = L"";
static wchar_t *g_LoggingFileName = L"";

void SetLoggingLevel(int Level);
void SetLogPath(wchar_t *Path);
void SetLogFileName(wchar_t *Filename);

char *GetMessageFromWindowsMessage(UINT Message);
WINKSTARTCALLER_API bool LogMessage(char *Msg, TLogginLevel LoggingLevel);
bool LogMessage(MSG Message, char *Source, TLogginLevel LoggingLevel);
WINKSTARTCALLER_API bool LogMessage(char *Msg, char *Value, TLogginLevel LoggingLevel);
WINKSTARTCALLER_API bool LogMessage(char *Msg, int Value, TLogginLevel LoggingLevel);
WINKSTARTCALLER_API bool LogMessage(char *Msg, HWND Handle, TLogginLevel LoggingLevel);
WINKSTARTCALLER_API bool LogMessage(char *Msg, RECT Range, TLogginLevel LogType);
